The present invention relates generally to electrical data processing, and more particularly to systems for circuit design and analysis of modular components. It is anticipated that primary application of the present invention will be in the design of application specific electrical data processing systems.
Briefly, when laying out a printed circuit board (PCB) using a software tool, such as ALLEGRO, PADS, or OrCAD, each component needs to be modeled with a footprint and a definition of the component pins. However, when a subassembly, such as a daughter card, has needed to be part of the design, the associated connectors have had to be placed individually, and the physical constraints manually designed and checked. Not only can this be a long and tedious process, but it must be repeated for every new design using the same subassembly. Clearly this existing process is time consuming and repetitive, and each time it is repeated there is an opportunity for mistakes to be made.
PCB design is a complex subject, as a summary of conventional practice the following covers it at three levels. First, the general usual steps are stated, then these are individually discussed, and finally some key aspects from the first two levels are further discussed in detail.
A typical board design project includes the general steps of: creating the board, specifying parameters for it, placing and checking the component placements, routing and checking the routings, and finishing the board. Thus, at a top level, the complex topic of PCB design can be reduced to four steps.
To create the board a netlist is created from a schematic design using a capture tool. The netlist may particularly include design rules to guide the later logical placement and routing. To specify board parameters, global settings are provided for the board, including units of measurement, grids, and spacing. In addition, a board outline can be created and the layer stack, padstacks, and vias can be defined. To place components, and to check this, a component tool is used to manually place components on the board individually or in groups. The placements can then be checked using information from a variety of sources. To route the board, and to check this, a routing tool is used to manually route. Many such tools today include push-and-shove capabilities, which move tracks to make room for a track or tracks currently being routed. The routing can then also be checked using routing information from a variety of sources. To finish the board a layout tool is used, having an ordered progression of command options to use. For example, in OrCAD these commands include Design Rule Check, Cleanup Design, Rename Components, Back Annotate, Run Post Processor, and Create Reports. A layout tool may also include or interface with full-featured CAD and CAM tools.
Even at this second level, PCB design may not seem overly daunting. The problem, however, is the shear volume of data that must be managed, and the interrelationships between that data. It is this which has motivated the growth of a substantial industry providing software tools and even recent university text books on computer aided PCB design and fabrication.
A netlist file is used to describe the interconnections of a schematic design using the names of the nets, components, and pins. A netlist typically contains: footprint names; electrical packaging; component names; net names; the component pin for each net; and net, pin, and component property information.
A technology template may be used to specify the characteristics of a board, including manufacturing complexity and component type. Technology templates can also include the layer structure, grid settings, spacing instructions, and a variety of other board criteria.
A board template may also be used. This combines a board outline and possible mounting holes, edge connectors, and other physical board objects which may be merged with a layout tool""s default technology template.
Finally, a board file is generated which contains all of the board""s physical and electrical information. In view of the complexity of many PCB designs today, these files and templates may be quite large. In fact, the amount of data that software design tools can handle has become a major criteria for their selection and pricing, and the desired operation speeds and other capacity issues similarly have become criteria for selecting the hardware on which these software tools are run.
There are basically two ways to create a PCB, to start from scratch or to use a previously created template. In many tools one can also import information from CAD tool files, but this approach presumes that these files were once also created from scratch or based on templates, at some point. Thus, ultimately, somebody has to start from scratch.
After establishing a schematic as a starting point, when designing a new PCB, or a template to be used in, potentially, a number of PCB designs, the design process tends to next focus on components. Most PCB design tool sets today include a librarian tool, to handle component information, and these often come or can be configurably ordered with a large database of information on standard components. This component database is often termed a component information system (CIS) and it may contain information that is used at all levels of the design process. A typical CIS today includes logical and physical component data, as well as purchasing and manufacturing data.
The CIS or PCB library xe2x80x9ccontentxe2x80x9d is often modified considerably by the library users. PCB library users may add additional components to the library. This can be done often by buying new library content from the original tool provider, and xe2x80x9csubscriptionxe2x80x9d schemes for this are common. Component manufacturers are also a frequent source for new library content, particularly for non-standard components. Component distributors are also playing an increasing role here, supplying component library definitions for common software tools to their prospective customers, to facilitate the customers design with and hopeful purchase of the respective components. Lastly, the end users of PCB libraries may modify or add component definitions themselves. For instance, an engineer may change a component definition based on past experience with that component, say its noise or heat characteristics, or a purchasing agent may change order lead times based on past experience or a distributor""s promise. A PCB library user may also add their own component definitions. For simple components this is widely done. For instance, a component such as a micro processor may be developed in-house or may be so new that its manufacturer has not yet standardized and shipped a library component definition.
PCB designers are comfortable with library component definitions, they have the qualities of basic building blocks, the available tools work well with them, and they tend to be well tested and reliable. Modern PCB designs, however, tend to quickly become more complex than simply picking and placing collections of basic component elements. Templates, macros, modules, and hierarchical design logic (HDL), are sub-tools which most sophisticated PCB design tools today include in at least some form, although with varying levels of acceptance and actual utility to the end users.
Templates are widely used. For example, if a designer is working on a PCB that will fit into a standard physical package, they can store the basic physical data for the board in a template file. If it is foreseeable that the next generations of the product will use, say, TTL ICs, the designer may go ahead and include a power supply and even clock circuits. If there are changes in future designs those will usually be minor in these areas. For very common PCBs, such as motherboards and daughter boards for personal computers, the PCB design tool provider may even supply very basic standard templates. Thus, PCB designers are often relatively comfortable with templates.
PCB designers, however, tend to not be comfortable with macros and modules. Macros here are much like macros in other common software tools, they are constructs of data and operational instructions. A macro may be a recording of user entered data and operations, or it may be written from scratch in a high-level macro programming language. Recorded macros often are rendered into a high-level macro programming language so that they can be edited and modified. Written macros usually need to be tested and edited. Both recorded and written macros, however, tend to suffer from two extremes, attempting to cover too little or too much at once.
A macro that is recorded is necessarily based on the state of the environment in which it is being recorded, and that environment may be quite complex. Attempting to provide for all later eventualities can make the macro unduly large and slow, and inherently degrades into an automated form of macro writing, anyway. In contrast, when a human writes a macro they tend to include too little because they are narrowly focused and have only a limited grasp of all of the variables and options available. For an example by way of analogy, the widely used word processing software being used here includes macro recording and writing capability. A simple task can be recorded and produce a 50-line macro, or it may be written as a 5-line macro. Both versions may work fine if the word processor is used in a xe2x80x9cwhat you see is what you getxe2x80x9d display mode, but one the other or both versions may produce undesired results or simply crash if the word processor is used in a draft text mode. In common word processing this may be acceptable, because human mechanisms catch or tend to forgive the resulting errors, but in complex PCB design the risks and the costs of the consequences are just too high.
Before closing on the topic of macros, it should be noted who generally has to provide macros. A tool designer may include example macros, but for frequent tasks they simply add a feature to their product.
In contrast to the complexity of macros, modules are simple. They are aggregates of their contents. HDL provides a good context in which to explain modules. In a PCB design a digital signal processor (DSP) block may be provided to gather data, along with a communications block, a power supply block, and a clock block. An HDL based design may thus start with these four basic blocks, perhaps by putting them into a standardized template. Some of these blocks are good candidates for modularization. A standard power supply block may be used, and a standard clock block may provide at least a starting point. Even the communications block may be standardized, thus leaving the only difficult design in the DSP block. Simply quartering the board and relegating the respective blocks to these quarters is usually too simplistic, however. The modules as aggregates of their contents instead get, conceptually, dropped into the board design and then get manipulated by pulling or pushing connection traces, or orienting or separating components, etc. A module thus is not desirably treated as a simple black box.
Nonetheless, there may be subassemblies which it is highly desirable to treat as a black box in PCB design. One increasingly common example is a standardized processor subsystem that is to be used in an application specific logic board. The present inventors, as representatives of Ampro Computers Inc., a leading supplier of standards-based computing solutions for embedded applications, have been faced with the growing customer need to easily design products using Ampro""s EnCore line of processor subsystems. [Further details of the EnCore product and supplemental background information may be found in applicant""s co pending U.S. patent application Ser. No. 09/917,481, hereby incorporated by reference.]
The EnCore systems are daughter boards specifically intended for use with application specific logic boards, where the use of an EnCore unit can abstract out the burdensome design and testing of core processor and I/O subsystems. FIGS. 1a-b (background art) show an EnCore system, with FIG. 1a showing it installed into a PCB and FIG. 1b showing just the footprint and connector layout of the EnCore system. In many design scenarios the physical details, such as the footprint and connector layout will be all that is needed. However, in more complex design environments, additional information, like electrical constraints can also be used.
The EnCore systems are thus examples in the growing class of complex electronic systems (CESs) which it is highly desirable to be able to easily incorporate into larger electronic systems. PCB designers do not want to be unduly burdened with the unnecessary internal details of CESs, and they particularly do not want their PCB design tools unduly burdened by these.
Unfortunately, in the present PCB design scheme, PCB design tools do not well work with CESs. Describing a CES with a macro is a massive undertaking and one fraught with peril. Even if a software PCB design tool and its underlying hardware can handle such a macro, the chances or recording or writing such macros that will be reliable is small. Similarly, a module approach, as we have described it herein, is too complex and risky. Both of these approaches include too much detail, which burdens the tools being used.
FIG. 2 (background art) is a block diagram depicting how the existing methods require access to several libraries to place a subassembly on a PCB. Each library must be validated for correctness, and the designers merely using CESs may well not have or want to have detailed information on the components of the CESs. The designers are also burdened even if they have the library information, since each part of the CES subassembly must be individually placed into the larger PCB design. For instance, where the vias are in a CES is irrelevant to the larger task of designing a PCB that the CES will plug into. Similarly, the possibility of traces on the CES being pushed or the connector for it being reoriented or shifted even a minor distance is unacceptable.
Accordingly, what is needed is a new approach to handling the growing use of CESs. The present inventors have analyzed this need and feel that the use of macro and module approaches are not suitable, if for no other reason than that user already distrust these and will not readily accept improvements of these tried and failed approaches. Rather, the inventors have concluded that a library element approach will best serve the need here. PCB designers are necessarily, already familiar with the use of library elements. It follows that what is needed is a library element approach that includes complex electronic systems (CESs).
Accordingly, it is an object of the present invention to provide an improved system to incorporate a complex electronic system (CES) in to a printed circuit board (PCB) design.
Briefly, a first preferred embodiment of the present invention is a method for creating a library element for a complex electronic system (CES) for use in a software printed circuit board (PCB) design tool. A specification for the CES is defined. Pads for the electrical connections of the CES are then specified according to the specification, connectors for groupings of the pads of the CES are also specified according to the specification, and a footprint of the CES is specified according to the specification. The presence of at least two said connectors define the CES as being complex. The pads, connectors, and footprint are then integrated into a single element unit, and this is stored as a library element for later distribution and use.
Briefly, a second preferred embodiment of the present invention is a library element as a product made by the method of the first preferred embodiment.
An advantage of the present invention is that it does provide an improved system to incorporate a complex electronic system (CES) in to a printed circuit board (PCB) design, and it does this in highly efficient and easily adoptable manner.
Another advantage of the invention is that it permits the use of a library element for one or more CESs when designing PCBs. As such, as little as one library is needed, and that library need not contain data on the respective individual elements of the CES.
Another advantage of the invention is that its use of a library element approach to PCB design is less burdensome on the software and hardware resources used. The software design tools are not unduly burdened by the processing efforts of a macro approach or the excessive detail of a modular approach. The hardware is not unduly burdened by the need to store and manage large and multiple CIS or library databases, and additional processing is minimized. As is well known, an increase in element count produces an increase in processing which is quite non-linear. The other design as-if-with-separate-elements, macro, and modular approaches all require treatment of a CES essentially as all of its individual elements. The invention reduces it to a single library element.
Another advantage of the invention is that it also works well with the human resources used in PCB design. It employs existing user knowledge and skills, since users doing PCB design necessarily must be familiar with more basic library elements, and it benefits from the existing user confidence with library elements. Unlike the other possible approaches to using CESs, the human user is not unduly burdened when using the same or similar CESs in multiple PCB designs. The users do not have to themselves work with each element of the CES, repetitively in each project, and they do not have to work with slowed and over burdened tools.
And another advantage of the invention is that it will reduce the costs of CES use and adoption in PCB design. The invention promotes direct efficiency in its use, and it also promotes project and distribution efficiency. Individual users may employ the invention quickly and accurately. Companies may employ the invention across a plurality of projects and project generations, and derive economies of scale. And the industry may employ the invention to easily and rapidly speed the acceptance and use of CESs in larger PCB designs. The invention thus provides substantial cost benefits.
These and other objects and advantages of the present invention will become clear to those skilled in the art in view of the description of the best presently known mode of carrying out the invention and the industrial applicability of the preferred embodiment as described herein and as illustrated in the several figures of the drawings.